import axios from "axios";
import { ElMessage } from "element-plus";
import router from "../router";

const request = axios.create({
    baseURL: '/api',
    timeout: 600000
})

//axios的请求拦截器，获取localStoryage中的token，放到请求头中
request.interceptors.request.use(
    (config) => { //成功回调
        const loginUser = JSON.parse(localStorage.getItem('loginUser'));     // 从localStorage中获取当前登录员工的信息
        if(loginUser && loginUser.token){     // 如果存在登录员工信息，并且包含token   gwt令牌存在于loginUser.token的key中  loginUser.token是当前登录员工信息中的令牌
            config.headers.token = loginUser.token    // 在请求头config.headers 增加了请求头名字为token，值为loginUser.token，即为令牌值
    } // 之后在每次请求时都会增加这个令牌信息

        if(loginUser && loginUser.id){     // 如果存在登录员工信息，并且包含id
            config.headers.userId = loginUser.id   // 在请求头config.headers 增加了请求头名字为userId，值为loginUser.id，即为当前登录员工的id
        }
        if(loginUser && loginUser.name){
            config.headers.userName = loginUser.username   // 在请求头config.headers 增加了请求头名字为userName，值为loginUser.name，即为当前登录员工的name
        }
        return config
    },
    (error) => { //失败回调
        
        return Promise.reject(error)
    }
)



// axios的响应拦截器
request.interceptors.response.use(
    (response) => {
        return response.data
    },
    (error) => {
        if( error.response && error.response.status == 401 ){  // === 表示全等
            // 401表示未授权，跳转到登录页面
            ElMessage.error("未登录，或登录已过期，请重新登录")
            window.location.href = '/login'
            router.push('/login')  // 跳转到登录页面
        }else{
            ElMessage.error("接口访问异常")
        }
        return Promise.reject(error)
    }
)
export default request